require(['canGrid', 'echarts', 'gaodeMap'], function (ec, defaultTheme) {
    var privoces = ['北京', '天津', '上海', '重庆', '河北', '河南', '云南', '辽宁', '黑龙江', '湖南', '安徽', '山东', '新疆', '江苏',
        '浙江', '江西', '湖北', '广西', '甘肃', '山西', '内蒙古', '陕西', '吉林', '福建', '贵州', '广东', '青海',
        '西藏', '四川', '宁夏', '海南', '台湾', '香港', '澳门'];
    var cities = ['重庆市', '北京市', '天津市', '上海市', '香港', '澳门', '巴音郭楞蒙古自治州', '和田地区', '哈密地区', '阿克苏地区',
        '阿勒泰地区', '喀什地区', '塔城地区', '昌吉回族自治州', '克孜勒苏柯尔克孜自治州', '吐鲁番地区', '伊犁哈萨克自治州',
        '博尔塔拉蒙古自治州', '乌鲁木齐市', '克拉玛依市', '阿拉尔市', '图木舒克市', '五家渠市', '石河子市', '那曲地区',
        '阿里地区', '日喀则地区', '林芝地区', '昌都地区', '山南地区', '拉萨市', '呼伦贝尔市', '阿拉善盟', '锡林郭勒盟',
        '鄂尔多斯市', '赤峰市', '巴彦淖尔市', '通辽市', '乌兰察布市', '兴安盟', '包头市', '呼和浩特市', '乌海市',
        '海西蒙古族藏族自治州', '玉树藏族自治州', '果洛藏族自治州', '海南藏族自治州', '海北藏族自治州', '黄南藏族自治州',
        '海东地区', '西宁市', '甘孜藏族自治州', '阿坝藏族羌族自治州', '凉山彝族自治州', '绵阳市', '达州市', '广元市',
        '雅安市', '宜宾市', '乐山市', '南充市', '巴中市', '泸州市', '成都市', '资阳市', '攀枝花市', '眉山市', '广安市',
        '德阳市', '内江市', '遂宁市', '自贡市', '黑河市', '大兴安岭地区', '哈尔滨市', '齐齐哈尔市', '牡丹江市', '绥化市',
        '伊春市', '佳木斯市', '鸡西市', '双鸭山市', '大庆市', '鹤岗市', '七台河市', '酒泉市', '张掖市', '甘南藏族自治州',
        '武威市', '陇南市', '庆阳市', '白银市', '定西市', '天水市', '兰州市', '平凉市', '临夏回族自治州', '金昌市',
        '嘉峪关市', '普洱市', '红河哈尼族彝族自治州', '文山壮族苗族自治州', '曲靖市', '楚雄彝族自治州', '大理白族自治州',
        '临沧市', '迪庆藏族自治州', '昭通市', '昆明市', '丽江市', '西双版纳傣族自治州', '保山市', '玉溪市', '怒江傈僳族自治州',
        '德宏傣族景颇族自治州', '百色市', '河池市', '桂林市', '南宁市', '柳州市', '崇左市', '来宾市', '玉林市', '梧州市',
        '贺州市', '钦州市', '贵港市', '防城港市', '北海市', '怀化市', '永州市', '邵阳市', '郴州市', '常德市', '湘西土家族苗族自治州',
        '衡阳市', '岳阳市', '益阳市', '长沙市', '株洲市', '张家界市', '娄底市', '湘潭市', '榆林市', '延安市', '汉中市', '安康市',
        '商洛市', '宝鸡市', '渭南市', '咸阳市', '西安市', '铜川市', '清远市', '韶关市', '湛江市', '梅州市', '河源市', '肇庆市',
        '惠州市', '茂名市', '江门市', '阳江市', '云浮市', '广州市', '汕尾市', '揭阳市', '珠海市', '佛山市', '潮州市', '汕头市',
        '深圳市', '东莞市', '中山市', '延边朝鲜族自治州', '吉林市', '白城市', '松原市', '长春市', '白山市', '通化市', '四平市',
        '辽源市', '承德市', '张家口市', '保定市', '唐山市', '沧州市', '石家庄市', '邢台市', '邯郸市', '秦皇岛市', '衡水市', '廊坊市',
        '恩施土家族苗族自治州', '十堰市', '宜昌市', '襄樊市', '黄冈市', '荆州市', '荆门市', '咸宁市', '随州市', '孝感市', '武汉市',
        '黄石市', '神农架林区', '天门市', '仙桃市', '潜江市', '鄂州市', '遵义市', '黔东南苗族侗族自治州', '毕节地区', '黔南布依族苗族自治州',
        '铜仁地区', '黔西南布依族苗族自治州', '六盘水市', '安顺市', '贵阳市', '烟台市', '临沂市', '潍坊市', '青岛市', '菏泽市', '济宁市',
        '德州市', '滨州市', '聊城市', '东营市', '济南市', '泰安市', '威海市', '日照市', '淄博市', '枣庄市', '莱芜市', '赣州市', '吉安市',
        '上饶市', '九江市', '抚州市', '宜春市', '南昌市', '景德镇市', '萍乡市', '鹰潭市', '新余市', '南阳市', '信阳市', '洛阳市', '驻马店市',
        '周口市', '商丘市', '三门峡市', '新乡市', '平顶山市', '郑州市', '安阳市', '开封市', '焦作市', '许昌市', '濮阳市', '漯河市', '鹤壁市',
        '大连市', '朝阳市', '丹东市', '铁岭市', '沈阳市', '抚顺市', '葫芦岛市', '阜新市', '锦州市', '鞍山市', '本溪市', '营口市', '辽阳市',
        '盘锦市', '忻州市', '吕梁市', '临汾市', '晋中市', '运城市', '大同市', '长治市', '朔州市', '晋城市', '太原市', '阳泉市', '六安市',
        '安庆市', '滁州市', '宣城市', '阜阳市', '宿州市', '黄山市', '巢湖市', '亳州市', '池州市', '合肥市', '蚌埠市', '芜湖市', '淮北市',
        '淮南市', '马鞍山市', '铜陵市', '南平市', '三明市', '龙岩市', '宁德市', '福州市', '漳州市', '泉州市', '莆田市', '厦门市', '丽水市',
        '杭州市', '温州市', '宁波市', '舟山市', '台州市', '金华市', '衢州市', '绍兴市', '嘉兴市', '湖州市', '盐城市', '徐州市', '南通市',
        '淮安市', '苏州市', '宿迁市', '连云港市', '扬州市', '南京市', '泰州市', '无锡市', '常州市', '镇江市', '吴忠市', '中卫市', '固原市',
        '银川市', '石嘴山市', '儋州市', '文昌市', '乐东黎族自治县', '三亚市',
        '琼中黎族苗族自治县', '东方市', '海口市', '万宁市', '澄迈县', '白沙黎族自治县', '琼海市', '昌江黎族自治县', '临高县', '陵水黎族自治县', '屯昌县',
        '定安县', '保亭黎族苗族自治县', '五指山市', '海淀区', '怀柔区', '延庆县', '密云县', '昌平区', '顺义区', '平谷区', '门头沟区', '房山区',
        '大兴区', '通州区', '丰台区', '石景山区', '西城区', '东城区', '宣武区', '崇文区', '朝阳区', '黄浦区', '卢湾区', '徐汇区', '长宁区', '静安区',
        '普陀区', '闸北区', '虹口区', '杨浦区', '闵行区', '宝山区', '嘉定区', '浦东新区', '金山区', '松江区', '青浦区', '南汇区', '奉贤区', '崇明县'
    ];
    var busArr = [],//高德地图bus数组
        proviceArr = [],
        cityArr = [];
    for (var i = 0; i < privoces.length; i++) {
        proviceArr.push({
            "name": privoces[i],
            "value": 0
        });
    }

    for (i = 0; i < cities.length; i++) {
        cityArr.push({
            "name": cities[i],
            "value": 0
        });
    }


    var userInfo = commonFun.execParentMethod("getUserInfo"); 								//当前登陆用户信息
    var selectedProvince = userInfo.provinceName.replace('省', '') || '北京',					//选择默认城市
        ecConfig = echarts.config,															//地图设置
        gaodeMap,																			//高德地图
        prevProvince,																		//上次点击的省份
        $vehicleList = $("#vehicleList"),													//车辆下拉列表
        myChart = echarts.init(document.getElementById('map'), defaultTheme),				//地图
        $echartsMap = $('#map-container'),													//echarts地图对象
        $gaodeMap = $('#real-map'),															//高德地图对象
        hasRealMapInit = false;																//高德地图是否初始化
    var option, maxNum = 0, tmpData;


    var req1 = $.ajaxExt({
        url: '/homeFactory/getAreaCar.htm',
        loadMask: true
    }).done(function (data) {
        var html = "";
        var widthAr = ['125px;', '105px;', '95px;', '80px;', '75px;', '60px;'];
        if (data) {
            if (data && data.length > 0) {
                $.each(data, function (n, item) {
                    if (item.carCount > maxNum) {
                        maxNum = item.carCount;
                    }
                    if (n == 0) {
                        html = html + "<li><i>" + item.provinceName + "</i><div class='num-bar'><div class='inner' style='width:" + widthAr[n]
                        + "'></div></div><span class='car-num'>" + item.carCount + "辆</span></li>"
                    } else {
                        html = html + "<li class='rank" + (n + 1) + "'><i>" + item.provinceName + "</i><div class='num-bar'><div class='inner' style='width:" + widthAr[n]
                        + "'></div></div><span class='car-num'>" + item.carCount + "辆</span></li>";
                    }
                });
            }
        }
        $("#vehicleDistributRank").html(html);
    });


    var req2 = $.ajaxExt({
        url: "/homeFactory/getProvinceLocation.htm",
        loadMask: true
    }).done(function (data) {
        if (data && data.length > 0) {
            $.each(data, function (index, item) {
                var prv;
                if (item.provinceId.indexOf('内蒙古') > 0 || item.provinceId.indexOf('黑龙江') > 0) {
                    prv = item.provinceId.subStr(0, 3);
                } else {
                    prv = item.provinceId.replace("省", "").replace("市", "");
                }
                var num = $.inArray(prv, privoces);
                if (num >= 0) {
                    proviceArr[num] = {"name": prv, "value": item.carCount};
                }
            });
        }
    });

    var req3 = $.ajaxExt({
        url: "/homeFactory/getCityLocation.htm",
        loadMask: true
    }).done(function (data) {
        if (data && data.length > 0) {
            $.each(data, function (index, item) {
                var num = $.inArray(item.cityName, cities);
                if (num > 0) {
                    cityArr[num] = {"name": item.cityName, "value": item.carCount};
                }
                if (num == 0) {
                    cityArr[num] = {"name": '重庆市', "value": item.carCount};
                }
            });
        }
    });

    //初始化车辆列表
    $vehicleList.canGrid({
        url: "/homeFactory/getCarPositionList.htm",
        height: 345,
        showLoadMask: true,
        colModel: [
            {name: "carType", label: 'carType', hidden: true},
            {name: "carSt", label: 'carSt', hidden: true},
            {name: "carId", label: 'carId', hidden: true},
            {name: "loLgt", label: 'loLgt', hidden: true},
            {name: "loLtt", label: 'loLtt', hidden: true},
            {name: "loDrc", label: 'loDrc', hidden: true},
            {name: "city", label: 'city', hidden: true},
            {
                name: "status", label: '状态', align: 'center', width: 40,
                formatter: function (rowIndex, val, rowData) {
                    if (rowData.carType == 'CAT00002' || rowData.carType == 'CAT00001') {
                        if (rowData.carSt == '0') {
                            return '<span class="icon-car"></span>';
                        } else if (rowData.carSt == '1') {
                            return '<span class="icon-car icon-car-normal-a"></span>';
                        } else if (rowData.carSt == '2') {
                            return '<span class="icon-car icon-car-normal-b"></span>';
                        }
                    } else if (rowData.carType == 'CAT00003' || rowData.carType == 'CAT00005' || rowData.carType == 'CAT00006') {
                        if (rowData.carSt == '0') {
                            return '<span class="icon-car icon-car-h"></span>';
                        } else if (rowData.carSt == '1') {
                            return '<span class="icon-car icon-car-h-a"></span>';
                        } else if (rowData.carSt == '2') {
                            return '<span class="icon-car icon-car-h-b"></span>';
                        }
                    } else {
                        if (rowData.carSt == '0') {
                            return '<span class="icon-car icon-car-elec"></span>';
                        } else if (rowData.carSt == '1') {
                            return '<span class="icon-car icon-car-elec-a"></span>';
                        } else if (rowData.carSt == '2') {
                            return '<span class="icon-car icon-car-elec-b"></span>';
                        }
                    }
                }
            },
            {
                name: "licPltNo", label: '车牌', align: 'center', width: 77,
                formatter: function (rowIndex, val, rowData) {
                    return '<a onClick="markOnMap(\'' + rowData.licPltNo + '\', \'' + rowData.loLgt + '\', \'' + rowData.loLtt + '\', \'' + rowData.loDrc + '\', \'' + rowData.city + '\')">' + val + '</a>';
                }
            },
            {
                name: "resolve", label: '监控', align: 'center', width: 57,
                formatter: function (rowIndex, val, rowData) {
                	//TODO 跳到空调监控
                    return '<a class="link-monitor" onClick="gotoPage(\'' + rowData.carId + '\')"></a>';
                }
            },
            {name: "seize", label: ''}
        ]
    });

    /**
     * 添加地图城市部分
     */
    function setSeries1() {
        option.series[1] = {
            name: userInfo.corpName,//$("#corpName").val(),
            type: 'map',
            mapType: selectedProvince,
            selectedMode: 'single',
            itemStyle: {
                normal: {label: {show: true}},
                emphasis: {label: {show: true}}
            },
            mapLocation: {
                x: '55%'
            },
            roam: false,
            data: cityArr
        };
        myChart.setOption(option, true);
    }

    myChart.on(ecConfig.EVENT.MAP_SELECTED, function (param) {
        var selected = param.selected;
        var target = param.target;
        var name;
        var location = selectedProvince;
        //selectedProvince = null;
        for (var i = 0, l = option.series[0].data.length; i < l; i++) {
            name = option.series[0].data[i].name;
            option.series[0].data[i].selected = selected[name];
            if (selected[name]) {
                selectedProvince = name;
                location = selectedProvince;
                loadLeftCarList();
                break;
            }
        }
        for (var i = 0, l = option.series[1].data.length; i < l; i++) {
            name = option.series[1].data[i].name;
            option.series[1].data[i].selected = selected[name];
            if (selected[name]) {
                if (target == name) {
                    initGaodeMap();
                    location += "|" + name;
                    loadCarList(selectedProvince, name);
                    $echartsMap.hide();
                    //$echartsMap.show();
                    $('#back-map').show();
                    $gaodeMap.show();
                    $("#addressTitle").attr("class", "area area-back");
                }
                break;
            }
        }
        $("#selectLocation").html(location);
        if (!selectedProvince) {
            return;
        }
        setSeries1();
    });


    //获取车辆列表并加载到高德地图中去
    function loadCarList(selectedProvince, name) {
        //加载车辆分布
        $.ajaxExt({
            url: "/homeFactory/getCarPositionList.htm",
            data: {
                province: selectedProvince,
                city: name
            }
        }).done(function (data) {
            gaodeMap.setMapLevel(12);
            gaodeMap.setMapCity(name);
            if (data) {
                tmpData = data;
                if (Object.prototype.toString.call(data) == "[object Array]") {
                    $.each(data, function (index, entity) {
                        addCarToGaodeMap(entity);
                    });
                }
            }
        });
    }

    /**
     * 添加车辆图标到高德地图
     * @param entity
     * @returns
     */
    function addCarToGaodeMap(entity) {
        var bus = new Bus(gaodeMap, entity.licPltNo, entity.loLgt, entity.loLtt, entity.loDrc);
        bus.carId = entity.carId;
        busArr.push(bus);
        bus.show();
    }


    //初始化高德地图
    function initGaodeMap() {
        if (!hasRealMapInit) {
            //以北京为中心
            hasRealMapInit = true;
            gaodeMap = new MapGaoDe(116.39705658, 39.91710958, 12);
        }
    }

    //加载左侧车辆列表
    function loadLeftCarList() {
        //TODO
        if (!selectedProvince || prevProvince == selectedProvince) {
            return;
        }
        prevProvince = selectedProvince;
        $vehicleList.canGrid('reload', {
            params: {
                "province": prevProvince,
                "city": '',
                "licPltNo": $("#searchVehicle").val()
            }
        });
    }


    //加载总体指标
    $.ajaxExt({
        url: '/homeAirCondition/getTotalIndex.htm'
    }).done(function (data) {
        $("#totalCars").html(data.totalCars + "<i>辆</i>");
        $("#elecCars").html(data.elecCars + "<i>辆</i>");
        $("#hybrid").html(data.hybrid + "<i>辆</i>");
        $("#traditional").html(data.traditional + "<i>辆</i>");
        $("#mostSeriousFaultsCount").html(data.seriousFaultCounts + "<i>次</i>");
    });

    //前五大故障排行时间纬度切换
    $.ajaxExt({
        url: '/homeFactory/getFaultRanking.htm'
    }).done(function (data) {
        var html = "";
        if (data) {
            $.each(data, function (n, item) {
                html += "<li><a onclick='gotoFaultPage(\"" + item.mftTypeCode + "\")'><i>" + item.faultCount + "</i></a><em>" + (n + 1) + "</em><span>" + item.faultName + "</span></li>";
            });
        }
        $('#FaultsRanking').empty().html(html);
    });


    //点击返回由高德地图返回至echarts地图
    $('#back-map').on('click', function () {
        $("#selectLocation").html(selectedProvince);
        clearGaodeBus();
        $gaodeMap.hide();
        $echartsMap.show();
        $('#back-map').hide();
        $("#addressTitle").attr("class", "area");
    });

    //TODO
    $("#searchVehicle").keyup(function () {
        $vehicleList.canGrid('reload', {params: {"province": selectedProvince, "city": '', "licPltNo": $(this).val()}});
    });

    //清除高德地图上面的bus
    function clearGaodeBus() {
        $.each(busArr, function (index, item) {
            item.clear();
        });
        busArr.splice(0, busArr.length);
    }

    window.gotoFaultPage = function (faultName) {
        $.openTab('4270f3bb02fa4bf0bab5f40a351ae747', 'gotoFaultsCount', [faultName]);
    };

    /**
     * 跳转到画像或者监控
     */
    window.gotoPage = function (carId) {
//    	var corpId = userInfo.corpId;
//    	if(corpId == "88b347f569ac4cf1b0d53e75e86bcc1a"){
//    		$.openTab('0c2b62e143be4799926cb58b367bdfbe', 'gotoSearch', [carId]);
//    	}else if(corpId == ""){
//    		$.openTab('', 'gotoSearch', [carId]);
//    	}else{
//    		$.openTab('716b052ef297428591a72b23066dc2b7', 'gotoSearch', [carId]);
//    	}
    	$.openTab('716b052ef297428591a72b23066dc2b7', 'gotoSearch', [carId]);
    };

    /**
     * 单车标记地图
     */
    window.markOnMap = function (licPltNo, loLgt, loLtt, loDrc) {
        $echartsMap.hide();
        $gaodeMap.show();
        $('#back-map').show();
        gaodeMap = new MapGaoDe(loLgt, loLtt, 16);
        var bus = new Bus(gaodeMap, licPltNo, loLgt, loLtt, loDrc);
        busArr.push(bus);
        clearGaodeBus();
        bus.show();
        //TODO 暂时先不显示城市内所有车
//        if(tmpData){
//        	$.each(tmpData, function (index, entity) {
//        		addCarToGaodeMap(entity);
//        	});
//        }
        $("#addressTitle").attr("class", "area area-back");
    };

    $("#selectLocation").html(selectedProvince);
    $.when(req1, req2, req3).done(function () {

        //地图配置
        option = {
            title: {
                text: ''
            },
            tooltip: {
                trigger: 'item'
            },
            dataRange: {
                min: 0,
                max: maxNum,
                x: 'left',
                y: 'bottom',
                text: ['高', '低'],
                calculable: true,
                color: ['orangered', 'yellow', 'lightskyblue']
            },
            //地图部分
            series: [
                {
                    name: userInfo.corpName,
                    type: 'map',
                    mapType: 'china',
                    mapLocation: {
                        x: 'left',
                        y: 'top',
                        width: '50%'
                    },
                    selectedMode: 'single',
                    roam: false,
                    itemStyle: {
                        normal: {label: {show: true}},
                        emphasis: {label: {show: true}}
                    },
                    data: proviceArr
                }
            ]
        };

        initGaodeMap();
        setSeries1();
        myChart.setOption(option, true);//加载地图设置
        loadLeftCarList();
    });

});